λ²κ°μ²λΌ λΉ λ₯Έ μΉμ¬μ΄νΈμ λΉλ°μ νμ΄λ³΄μΈμ. μ΄ κ°μ΄λλ μ μΈκ³ μ¬μ©μμ μ±λ₯ λ° μ¬μ©μ κ²½ν ν₯μμ μν λΈλΌμ°μ λ λλ§ μ΅μ ν κΈ°μ μ λ€λ£Ήλλ€.
λΈλΌμ°μ μ±λ₯: λ λΉ λ₯Έ μΉμ μν λ λλ§ μ΅μ ν λ§μ€ν°νκΈ°
μ€λλ μ λμ§νΈ νκ²½μμ μΉμ¬μ΄νΈ μλλ κ°μ₯ μ€μν©λλ€. μ¬μ©μλ€μ μ¦κ°μ μΈ λ§μ‘±μ κΈ°λνλ©°, λλ¦° μΉμ¬μ΄νΈλ λΆλ§, μ₯λ°κ΅¬λ μ΄ν, κ·Έλ¦¬κ³ μμ΅ μμ€λ‘ μ΄μ΄μ§ μ μμ΅λλ€. λΉ λ₯Έ μΉ κ²½νμ ν΅μ¬μλ ν¨μ¨μ μΈ λΈλΌμ°μ λ λλ§μ΄ μμ΅λλ€. μ΄ μ’ ν© κ°μ΄λλ λΈλΌμ°μ λ λλ§ μ΅μ νμ 볡μ‘μ±μ κΉμ΄ νκ³ λ€μ΄, μ μΈκ³ μ¬μ©μλ€μ μν΄ λΉ λ₯΄κ³ μλ²½νκ² μλνλ μΉμ¬μ΄νΈλ₯Ό λ§λλ λ° νμν μ§μκ³Ό λꡬλ₯Ό μ 곡ν©λλ€.
λΈλΌμ°μ λ λλ§ νμ΄νλΌμΈ μ΄ν΄νκΈ°
μ΅μ ν κΈ°μ μ λν΄ μμ보기 μ μ, λΈλΌμ°μ κ° μ½λλ₯Ό λμ 보μ΄λ μΉνμ΄μ§λ‘ λ³ννλ κ³Όμ μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. λ λλ§ νμ΄νλΌμΈμΌλ‘ μλ €μ§ μ΄ νλ‘μΈμ€λ λ€μκ³Ό κ°μ λͺ κ°μ§ μ£Όμ λ¨κ³λ‘ ꡬμ±λ©λλ€:
- HTML νμ±: λΈλΌμ°μ λ HTML λ§ν¬μ μ νμ±νμ¬ μΉνμ΄μ§ ꡬ쑰μ νΈλ¦¬ νν ννμΈ λ¬Έμ κ°μ²΄ λͺ¨λΈ(DOM)μ ꡬμ±ν©λλ€.
- CSS νμ±: λμμ λΈλΌμ°μ λ CSS νμΌ(λλ μΈλΌμΈ μ€νμΌ)μ νμ±νμ¬ νμ΄μ§μ μκ°μ μ€νμΌμ λνλ΄λ CSS κ°μ²΄ λͺ¨λΈ(CSSOM)μ μμ±ν©λλ€.
- λ λ νΈλ¦¬ ꡬμΆ: λΈλΌμ°μ λ DOMκ³Ό CSSOMμ κ²°ν©νμ¬ λ λ νΈλ¦¬λ₯Ό λ§λλλ€. μ΄ νΈλ¦¬μλ νλ©΄μ νμλ μμλ§ ν¬ν¨λ©λλ€.
- λ μ΄μμ(리νλ‘μ°): λΈλΌμ°μ λ λ λ νΈλ¦¬μ μλ κ° μμμ μμΉμ ν¬κΈ°λ₯Ό κ³μ°ν©λλ€. μ΄ κ³Όμ μ λ μ΄μμ λλ 리νλ‘μ°λΌκ³ ν©λλ€. DOM ꡬ쑰, μ½ν μΈ λλ μ€νμΌμ λ³κ²½μ 리νλ‘μ°λ₯Ό μ λ°ν μ μμΌλ©°, μ΄λ κ³μ° λΉμ©μ΄ λ§μ΄ λλλ€.
- νμΈν (리νμΈνΈ): λΈλΌμ°μ λ νλ©΄μ κ° μμλ₯Ό κ·Έλ¦¬κ³ , λ λ νΈλ¦¬λ₯Ό μ€μ ν½μ λ‘ λ³νν©λλ€. 리νμΈν μ λ μ΄μμμ μν₯μ μ£Όμ§ μκ³ μκ°μ μ€νμΌμ΄ λ³κ²½λ λ(μ: λ°°κ²½μμ΄λ κ°μμ± λ³κ²½) λ°μν©λλ€.
- μ»΄ν¬μ§ν (ν©μ±): λΈλΌμ°μ λ μΉνμ΄μ§μ μ¬λ¬ λ μ΄μ΄(μ: `position: fixed` λλ CSS λ³νμ΄ μ μ©λ μμ)λ₯Ό κ²°ν©νμ¬ μ¬μ©μμκ² νμλλ μ΅μ’ μ΄λ―Έμ§λ₯Ό μμ±ν©λλ€.
μ΄ νμ΄νλΌμΈμ μ΄ν΄νλ κ²μ μ μ¬μ μΈ λ³λͺ© νμμ μλ³νκ³ λͺ©νμ λ§λ μ΅μ ν μ λ΅μ μ μ©νλ λ° λ§€μ° μ€μν©λλ€.
μ€μ λ λλ§ κ²½λ‘(CRP) μ΅μ ν
μ€μ λ λλ§ κ²½λ‘(CRP)λ λΈλΌμ°μ κ° μΉνμ΄μ§μ μ΄κΈ° λ·°λ₯Ό λ λλ§νκΈ° μν΄ κ±°μ³μΌ νλ μΌλ ¨μ λ¨κ³λ₯Ό λ§ν©λλ€. CRP μ΅μ νλ μ¬μ©μ κ²½νμ ν° μν₯μ λ―ΈμΉλ λΉ λ₯Έ 첫 νμΈνΈ(first paint)λ₯Ό λ¬μ±νλ λ° νμμ μ λλ€.
1. μ€μ 리μμ€ μ μ΅μν
λΈλΌμ°μ κ° λ€μ΄λ‘λνκ³ νμ±ν΄μΌ νλ κ° λ¦¬μμ€(HTML, CSS, JavaScript)λ CRPμ μ§μ° μκ°μ μΆκ°ν©λλ€. μ€μ 리μμ€ μλ₯Ό μ΅μννλ©΄ μ 체 λ‘λ© μκ°μ΄ μ€μ΄λλλ€.
- HTTP μμ² μ€μ΄κΈ°: CSSμ JavaScript νμΌμ λ μ μ μμ νμΌλ‘ κ²°ν©νμ¬ HTTP μμ² μλ₯Ό μ€μ λλ€. webpack, Parcel, Rollupκ³Ό κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ΄ νλ‘μΈμ€λ₯Ό μλνν μ μμ΅λλ€.
- μ€μ CSS μΈλΌμ΄λ: μ€ν¬λ‘€ μμ΄ λ³Ό μ μλ λΆλΆ(above-the-fold)μ μ½ν μΈ λ λλ§μ νμν CSSλ₯Ό HTML νμΌμ μ§μ ν¬ν¨μν΅λλ€. μ΄λ κ² νλ©΄ μ€μ CSSμ λν μΆκ° HTTP μμ²μ΄ νμ μκ² λ©λλ€. λ¨, HTML νμΌ ν¬κΈ°κ° 컀μ§λ λ¨μ μ΄ μμ΅λλ€.
- μ€μνμ§ μμ CSS μ§μ° λ‘λ©: μ΄κΈ° λ·°μ νμμ μ΄μ§ μμ CSSλ λΉλκΈ°μ μΌλ‘ λ‘λν©λλ€. `preload` link rel μμ±κ³Ό `as="style"` λ° `onload="this.onload=null;this.rel='stylesheet'"`λ₯Ό μ¬μ©νμ¬ λ λλ§μ μ°¨λ¨νμ§ μκ³ CSSλ₯Ό λ‘λν μ μμ΅λλ€.
- JavaScript λ‘λ© μ§μ°: `defer` λλ `async` μμ±μ μ¬μ©νμ¬ JavaScriptκ° HTML νμ±μ μ°¨λ¨νλ κ²μ λ°©μ§ν©λλ€. `defer`λ μ€ν¬λ¦½νΈκ° HTMLμ λνλλ μμλλ‘ μ€νλλλ‘ λ³΄μ₯νλ λ°λ©΄, `async`λ μ€ν¬λ¦½νΈκ° λ€μ΄λ‘λλλ μ¦μ μ€νλλλ‘ νμ©ν©λλ€. μ€ν¬λ¦½νΈμ μμ‘΄μ± λ° μ€ν μμ μꡬ μ¬νμ λ°λΌ μ μ ν μμ±μ μ ννμΈμ.
2. CSS μ λ¬ μ΅μ ν
CSSλ λ λλ§ μ°¨λ¨ λ¦¬μμ€μ λλ€. μ¦, λΈλΌμ°μ λ λͺ¨λ CSS νμΌμ΄ λ€μ΄λ‘λλκ³ νμ±λ λκΉμ§ νμ΄μ§λ₯Ό λ λλ§νμ§ μμ΅λλ€. CSS μ λ¬μ μ΅μ ννλ©΄ λ λλ§ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- CSS μΆμ(Minify): CSS νμΌμμ λΆνμν λ¬Έμ(곡백, μ£Όμ)λ₯Ό μ κ±°νμ¬ ν¬κΈ°λ₯Ό μ€μ λλ€. λ§μ λΉλ λꡬμμ CSS μΆμ μ΅μ μ μ 곡ν©λλ€.
- CSS μμΆ: Gzip λλ Brotli μμΆμ μ¬μ©νμ¬ μ μ‘ μ€ CSS νμΌμ ν¬κΈ°λ₯Ό λμ± μ€μ λλ€. μΉ μλ²κ° μμΆμ μ¬μ©νλλ‘ κ΅¬μ±λμ΄ μλμ§ νμΈνμΈμ.
- μ¬μ©νμ§ μλ CSS μ κ±°: νμ΄μ§μμ μ€μ λ‘ μ¬μ©λμ§ μλ CSS κ·μΉμ μλ³νκ³ μ κ±°ν©λλ€. PurgeCSS λ° UnCSSμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ΄ νλ‘μΈμ€λ₯Ό μλνν μ μμ΅λλ€.
- CSS @import νΌνκΈ°: CSSμ `@import` λ¬Έμ μμ²μ μ°μλ₯Ό λ§λ€μ΄ λ€λ₯Έ CSS νμΌμ λ‘λ©μ μ§μ°μν¬ μ μμ΅λλ€. `@import`λ₯Ό HTMLμ `` νκ·Έλ‘ λ체νμΈμ.
3. μλ°μ€ν¬λ¦½νΈ μ€ν μ΅μ ν
JavaScriptλ νΉν DOMμ΄λ CSSOMμ μμ νλ κ²½μ° λ λλ§μ μ°¨λ¨ν μ μμ΅λλ€. JavaScript μ€νμ μ΅μ ννλ κ²μ λΉ λ₯Έ 첫 νμΈνΈλ₯Ό μν΄ λ§€μ° μ€μν©λλ€.
- JavaScript μΆμ: JavaScript νμΌμμ λΆνμν λ¬Έμλ₯Ό μ κ±°νμ¬ ν¬κΈ°λ₯Ό μ€μ λλ€.
- JavaScript μμΆ: Gzip λλ Brotli μμΆμ μ¬μ©νμ¬ μ μ‘ μ€ JavaScript νμΌ ν¬κΈ°λ₯Ό μ€μ λλ€.
- JavaScript μ§μ° λλ λΉλκΈ° λ‘λ: μμ μΈκΈνλ―μ΄ `defer` λλ `async` μμ±μ μ¬μ©νμ¬ JavaScriptκ° HTML νμ±μ μ°¨λ¨νλ κ²μ λ°©μ§ν©λλ€.
- μ₯κΈ° μ€ν JavaScript μμ νΌνκΈ°: μ₯κΈ° μ€ν JavaScript μμ μ μμ λ©μ΄λ¦¬λ‘ λλμ΄ λΈλΌμ°μ κ° μλ΅νμ§ μλ κ²μ λ°©μ§ν©λλ€. `setTimeout` λλ `requestAnimationFrame`μ μ¬μ©νμ¬ μ΄λ¬ν μμ μ μ€μΌμ€λ§νμΈμ.
- JavaScript μ½λ μ΅μ ν: ν¨μ¨μ μΈ JavaScript μ½λλ₯Ό μμ±νμ¬ μ€ν μκ°μ μ΅μνν©λλ€. λΆνμν DOM μ‘°μμ νΌνκ³ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ μ¬μ©νλ©° μ½λλ₯Ό νλ‘νμΌλ§νμ¬ μ±λ₯ λ³λͺ© νμμ μλ³νμΈμ.
λ λλ§ μ±λ₯ ν₯μμ μν κΈ°μ
CRP μ΅μ ν μΈμλ λ λλ§ μ±λ₯μ ν₯μμν€κΈ° μν΄ μ¬μ©ν μ μλ λͺ κ°μ§ λ€λ₯Έ κΈ°μ μ΄ μμ΅λλ€.
1. 리νμΈνΈμ 리νλ‘μ° μ΅μν
리νμΈνΈμ 리νλ‘μ°λ μ±λ₯μ ν° μν₯μ μ€ μ μλ λΉμ©μ΄ λ§μ΄ λλ μμ μ λλ€. μ΄λ¬ν μμ μ μλ₯Ό μ€μ΄λ κ²μ μνν μ¬μ©μ κ²½νμ μν΄ λ§€μ° μ€μν©λλ€.
- DOM μ λ°μ΄νΈ μΌκ΄ μ²λ¦¬: μ¬λ¬ DOM μ λ°μ΄νΈλ₯Ό ν¨κ» κ·Έλ£Ήννμ¬ λ¦¬νλ‘μ° νμλ₯Ό μ΅μνν©λλ€. DOMμ μ¬λ¬ λ² μμ νλ λμ , λΆλ¦¬λ DOM λ Έλμ λͺ¨λ λ³κ²½ μ¬νμ μ μ©ν λ€μ λΌμ΄λΈ DOMμ μΆκ°νμΈμ.
- κ°μ λκΈ°μ λ μ΄μμ νΌνκΈ°: DOMμ μμ ν μ§νμ λ μ΄μμ μμ±(μ: `offsetWidth`, `offsetHeight`)μ μ½μ§ λ§μΈμ. μ΄λ λΈλΌμ°μ κ° λκΈ°μ λ μ΄μμμ μννλλ‘ κ°μ νμ¬ DOM μ λ°μ΄νΈ μΌκ΄ μ²λ¦¬μ μ΄μ μ 무ν¨νν μ μμ΅λλ€.
- μ λλ©μ΄μ μ CSS λ³ν λ° ν¬λͺ λ μ¬μ©: `top`, `left`, `width`, `height`μ κ°μ μμ±μ μ λλ©μ΄μ νλ©΄ 리νλ‘μ°κ° λ°μν μ μμ΅λλ€. λμ CSS λ³ν(μ: `translate`, `scale`, `rotate`)κ³Ό `opacity`λ₯Ό μ¬μ©νμΈμ. μ΄λ€μ νλμ¨μ΄ κ°μμ΄ κ°λ₯νλ©° 리νλ‘μ°λ₯Ό μ λ°νμ§ μμ΅λλ€.
- λ μ΄μμ μ€λμ±(Layout Thrashing) νΌνκΈ°: λ μ΄μμ μ€λμ±μ 루ν λ΄μμ λ μ΄μμ μμ±μ λ°λ³΅μ μΌλ‘ μ½κ³ μΈ λ λ°μν©λλ€. μ΄λ μλ§μ 리νλ‘μ°μ 리νμΈνΈλ₯Ό μ λ°ν μ μμ΅λλ€. DOMμ μμ νκΈ° μ μ νμν λͺ¨λ λ μ΄μμ μμ±μ μ½μ΄μ μ΄ ν¨ν΄μ νΌνμΈμ.
2. λΈλΌμ°μ μΊμ± νμ©
λΈλΌμ°μ μΊμ±μ μ¬μ©νλ©΄ λΈλΌμ°μ κ° μ μ μμ°(μ΄λ―Έμ§, CSS, JavaScript)μ λ‘컬μ μ μ₯νμ¬ λ°λ³΅μ μΌλ‘ λ€μ΄λ‘λν νμμ±μ μ€μΌ μ μμ΅λλ€. μ μ ν μΊμ ꡬμ±μ νΉν μ¬λ°©λ¬Έμμ μ±λ₯μ ν₯μμν€λ λ° νμμ μ λλ€.
- μΊμ ν€λ μ€μ : μΉ μλ²λ₯Ό ꡬμ±νμ¬ μ μ ν μΊμ ν€λ(μ: `Cache-Control`, `Expires`, `ETag`)λ₯Ό μ€μ νμ¬ λΈλΌμ°μ μ 리μμ€λ₯Ό μΊμν κΈ°κ°μ μ§μν©λλ€.
- μ½ν μΈ μ μ‘ λ€νΈμν¬(CDN) μ¬μ©: CDNμ μΉμ¬μ΄νΈμ μμ°μ μ μΈκ³ μ¬λ¬ μλ²μ λΆμ°μν΅λλ€. μ΄λ₯Ό ν΅ν΄ μ¬μ©μλ μ§λ¦¬μ μΌλ‘ λ κ°κΉμ΄ μλ²μμ μμ°μ λ€μ΄λ‘λνμ¬ μ§μ° μκ°μ μ€μ΄κ³ λ€μ΄λ‘λ μλλ₯Ό ν₯μμν¬ μ μμ΅λλ€. λ€μν κΈλ‘λ² μ¬μ©μμκ² μλΉμ€λ₯Ό μ 곡νκΈ° μν΄ Cloudflare, AWS CloudFront, Akamai λλ Azure CDNκ³Ό κ°μ κΈλ‘λ² μ μ§λ₯Ό κ°μ§ CDNμ κ³ λ €νμΈμ.
- μΊμ λ²μ€ν (Cache Busting): μ μ μμ°μ μ λ°μ΄νΈν λ λΈλΌμ°μ κ° μΊμλ λ²μ λμ μ λ²μ μ λ€μ΄λ‘λνλλ‘ ν΄μΌ ν©λλ€. νμΌ μ΄λ¦μ λ²μ λ²νΈλ₯Ό μΆκ°νκ±°λ(μ: `style.v1.css`) 쿼리 λ§€κ°λ³μλ₯Ό μ¬μ©νλ(μ: `style.css?v=1`) λ±μ μΊμ λ²μ€ν κΈ°μ μ μ¬μ©νμΈμ.
3. μ΄λ―Έμ§ μ΅μ ν
μ΄λ―Έμ§λ μ’ μ’ μΉμ¬μ΄νΈ νμ΄μ§ ν¬κΈ°μ μλΉ λΆλΆμ μ°¨μ§ν©λλ€. μ΄λ―Έμ§λ₯Ό μ΅μ ννλ©΄ λ‘λ© μκ°μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
- μ¬λ°λ₯Έ μ΄λ―Έμ§ νμ μ ν: λ€μν μ νμ μ΄λ―Έμ§μ μ ν©ν μ΄λ―Έμ§ νμμ μ¬μ©νμΈμ. JPEGλ μΌλ°μ μΌλ‘ μ¬μ§μ μ ν©νκ³ , PNGλ λ μΉ΄λ‘μ΄ μ κ³Ό ν μ€νΈκ° μλ κ·Έλν½μ λ μ’μ΅λλ€. WebPλ JPEG λ° PNGμ λΉν΄ μ°μν μμΆλ₯ μ μ 곡νλ μ΅μ μ΄λ―Έμ§ νμμ λλ€. λΈλΌμ°μ μ§μμ΄ νμ©λλ€λ©΄ ν¨μ¬ λ λμ μμΆμ μν΄ AVIF μ¬μ©μ κ³ λ €νμΈμ.
- μ΄λ―Έμ§ μμΆ: μκ°μ νμ§μ λ무 λ§μ΄ ν¬μνμ§ μμΌλ©΄μ μ΄λ―Έμ§μ νμΌ ν¬κΈ°λ₯Ό μ€μ λλ€. ImageOptim, TinyPNG λλ ShortPixelκ³Ό κ°μ μ΄λ―Έμ§ μ΅μ ν λꡬλ₯Ό μ¬μ©νμΈμ.
- μ΄λ―Έμ§ ν¬κΈ° μ‘°μ : λμ€νλ μ΄ μμμ μ μ ν ν¬κΈ°μ μ΄λ―Έμ§λ₯Ό μ 곡νμΈμ. λΈλΌμ°μ μ μν΄ μΆμλλ ν° μ΄λ―Έμ§λ₯Ό μ 곡νμ§ λ§μΈμ. λ°μν μ΄λ―Έμ§(`srcset` μμ±)λ₯Ό μ¬μ©νμ¬ κΈ°κΈ°μ νλ©΄ ν¬κΈ° λ° ν΄μλμ λ°λΌ λ€λ₯Έ μ΄λ―Έμ§ ν¬κΈ°λ₯Ό μ 곡νμΈμ.
- μ΄λ―Έμ§ μ§μ° λ‘λ©(Lazy Load): μ΄λ―Έμ§κ° λ·°ν¬νΈμ νμλκΈ° μ§μ μλ§ λ‘λν©λλ€. μ΄λ νΉν μ€ν¬λ‘€ μλμ μ΄λ―Έμ§κ° λ§μ νμ΄μ§μ μ΄κΈ° λ‘λ© μκ°μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. `
` μμμ `loading="lazy"` μμ±μ μ¬μ©νκ±°λ λ κ³ κΈ μ§μ° λ‘λ© κΈ°μ μ μν΄ JavaScript λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμΈμ.
- μ΄λ―Έμ§ CDN μ¬μ©: Cloudinaryλ Imgixμ κ°μ μ΄λ―Έμ§ CDNμ λ€μν κΈ°κΈ° λ° λ€νΈμν¬ μ‘°κ±΄μ λ§κ² μ΄λ―Έμ§λ₯Ό μλμΌλ‘ μ΅μ νν μ μμ΅λλ€.
4. μ½λ λΆν (Code Splitting)
μ½λ λΆν μ JavaScript μ½λλ₯Ό νμμ λ°λΌ λ‘λν μ μλ λ μμ λ²λ€λ‘ λλλ κ²μ ν¬ν¨ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ΄κΈ° λ€μ΄λ‘λ ν¬κΈ°λ₯Ό μ€μ΄κ³ μμ μκ°μ ν₯μμν¬ μ μμ΅λλ€.
- κ²½λ‘ κΈ°λ° λΆν (Route-Based Splitting): μ ν리μΌμ΄μ μ λ€λ₯Έ κ²½λ‘ λλ νμ΄μ§λ₯Ό κΈ°λ°μΌλ‘ μ½λλ₯Ό λΆν ν©λλ€. νμ¬ κ²½λ‘μ νμν JavaScriptλ§ λ‘λν©λλ€.
- μ»΄ν¬λνΈ κΈ°λ° λΆν (Component-Based Splitting): μ ν리μΌμ΄μ μ λ€λ₯Έ μ»΄ν¬λνΈλ₯Ό κΈ°λ°μΌλ‘ μ½λλ₯Ό λΆν ν©λλ€. νμν λλ§ μ»΄ν¬λνΈλ₯Ό λ‘λν©λλ€.
- λ²€λ λΆν (Vendor Splitting): μλνν° λΌμ΄λΈλ¬λ¦¬ λ° νλ μμν¬λ₯Ό λ 립μ μΌλ‘ μΊμν μ μλ λ³λμ λ²λ€λ‘ λΆλ¦¬ν©λλ€.
5. κΈ΄ λͺ©λ‘ κ°μν
κΈ΄ λ°μ΄ν° λͺ©λ‘μ νμν λ λͺ¨λ μμλ₯Ό ν λ²μ λ λλ§νλ κ²μ κ³μ° λΉμ©μ΄ λ§μ΄ λ€ μ μμ΅λλ€. μλμ(windowing)κ³Ό κ°μ κ°μν κΈ°μ μ νμ¬ λ·°ν¬νΈμ 보μ΄λ μμλ§ λ λλ§ν©λλ€. μ΄λ νΉν λκ·λͺ¨ λ°μ΄ν°μ μ κ²½μ° μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
6. μΉ μ컀(Web Workers) νμ©
μΉ μ컀λ₯Ό μ¬μ©νλ©΄ λ©μΈ μ€λ λλ₯Ό μ°¨λ¨νμ§ μκ³ λ°±κ·ΈλΌμ΄λ μ€λ λμμ JavaScript μ½λλ₯Ό μ€νν μ μμ΅λλ€. μ΄λ μ΄λ―Έμ§ μ²λ¦¬λ λ°μ΄ν° λΆμκ³Ό κ°μ κ³μ° μ§μ½μ μΈ μμ μ μ μ©ν μ μμ΅λλ€. μ΄λ¬ν μμ μ μΉ μ컀μ μ€νλ‘λν¨μΌλ‘μ¨ λ©μΈ μ€λ λμ λ°μμ±μ μ μ§νκ³ λΈλΌμ°μ κ° μλ΅νμ§ μλ κ²μ λ°©μ§ν μ μμ΅λλ€.
7. μ±λ₯ λͺ¨λν°λ§ λ° λΆμ
μΉμ¬μ΄νΈμ μ±λ₯μ μ κΈ°μ μΌλ‘ λͺ¨λν°λ§νκ³ λΆμνμ¬ μ μ¬μ μΈ λ³λͺ© νμμ μλ³νκ³ μ΅μ ν λ Έλ ₯μ ν¨κ³Όλ₯Ό μΆμ νμΈμ.
- λΈλΌμ°μ κ°λ°μ λꡬ μ¬μ©: Chrome DevTools, Firefox κ°λ°μ λꡬ λλ Safari μΉ κ²μ¬κΈ°λ₯Ό μ¬μ©νμ¬ μΉμ¬μ΄νΈμ μ±λ₯μ νλ‘νμΌλ§νκ³ , λ‘λ©μ΄ λλ¦° 리μμ€λ₯Ό μλ³νλ©°, JavaScript μ€ν μκ°μ λΆμνμΈμ.
- μΉ μ±λ₯ λͺ¨λν°λ§ λꡬ μ¬μ©: Google PageSpeed Insights, WebPageTest, Lighthouseμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μΉμ¬μ΄νΈ μ±λ₯μ λν ν΅μ°°λ ₯μ μ»κ³ κ°μ ν μμμ μλ³νμΈμ.
- μ€μ μ¬μ©μ λͺ¨λν°λ§(RUM) ꡬν: RUMμ μ¬μ©νλ©΄ μΉμ¬μ΄νΈλ₯Ό λ°©λ¬Ένλ μ€μ μ¬μ©μλ‘λΆν° μ±λ₯ λ°μ΄ν°λ₯Ό μμ§ν μ μμ΅λλ€. μ΄λ μ€μ νκ²½μμ μΉμ¬μ΄νΈκ° μ΄λ»κ² μλνλμ§μ λν κ·μ€ν ν΅μ°°λ ₯μ μ 곡ν©λλ€.
κΈλ‘λ² νκ²½μ μν λΈλΌμ°μ μ±λ₯ κ³ λ €μ¬ν
κΈλ‘λ² μ¬μ©μλ₯Ό μν΄ λΈλΌμ°μ μ±λ₯μ μ΅μ νν λλ λ€μ μμλ₯Ό κ³ λ €νλ κ²μ΄ μ€μν©λλ€:
- λ€νΈμν¬ μ§μ° μκ°: μΈκ³ κ°μ§μ μ¬μ©μλ μλ‘ λ€λ₯Έ λ€νΈμν¬ μ§μ° μκ°μ κ²½νν μ μμ΅λλ€. CDNμ μ¬μ©νμ¬ μ§λ¦¬μ μΌλ‘ λ©λ¦¬ λ¨μ΄μ§ μ¬μ©μμ μ§μ° μκ°μ μ€μ΄μΈμ.
- κΈ°κΈ° μ±λ₯: μ¬μ©μλ μ²λ¦¬ λ₯λ ₯κ³Ό λ©λͺ¨λ¦¬κ° λ€λ₯Έ λ€μν κΈ°κΈ°μμ μΉμ¬μ΄νΈμ μ μν μ μμ΅λλ€. μ μ¬μ κΈ°κΈ°λ₯Ό ν¬ν¨ν λ€μν κΈ°κΈ°μ λ§κ² μΉμ¬μ΄νΈλ₯Ό μ΅μ ννμΈμ.
- μΈν°λ· μλ: μ¬μ©μλ μΈν°λ· μλκ° λ€λ₯Ό μ μμ΅λλ€. νμ΄μ§ ν¬κΈ°λ₯Ό μ€μ΄κ³ μ§μ° λ‘λ©κ³Ό κ°μ κΈ°μ μ μ¬μ©νμ¬ λλ¦° μΈν°λ· μ°κ²°μ λ§κ² μΉμ¬μ΄νΈλ₯Ό μ΅μ ννμΈμ.
- λ¬Ένμ μ°¨μ΄: μΉμ¬μ΄νΈλ₯Ό λμμΈν λ λ¬Ένμ μ°¨μ΄λ₯Ό κ³ λ €νμΈμ. μλ₯Ό λ€μ΄, λ¬Ένλ§λ€ μμ, κΈκΌ΄, λ μ΄μμμ λν μ νΈλκ° λ€λ₯Ό μ μμ΅λλ€. λ€μν λ¬Ένμ λ°°κ²½μ κ°μ§ μ¬μ©μκ° μΉμ¬μ΄νΈμ μ κ·ΌνκΈ° μ½κ³ μ¬μ©μ μΉνμ μΈμ§ νμΈνμΈμ.
- νμ§ν: λ€λ₯Έ μΈμ΄μ μ§μμ λ§κ² μΉμ¬μ΄νΈλ₯Ό νμ§ννμΈμ. μ¬κΈ°μλ ν μ€νΈ λ²μ, μ΄λ―Έμ§ μ‘°μ , λ μ§ λ° μκ° νμ μ‘°μ μ΄ ν¬ν¨λ©λλ€.
κ²°λ‘
λΈλΌμ°μ λ λλ§ μ΅μ νλ λΈλΌμ°μ μ λ λλ§ νμ΄νλΌμΈκ³Ό μ±λ₯μ μν₯μ λ―ΈμΉ μ μλ λ€μν μμμ λν κΉμ μ΄ν΄λ₯Ό νμλ‘ νλ μ§μμ μΈ κ³Όμ μ λλ€. μ΄ κ°μ΄λμ μ€λͺ λ κΈ°μ μ ꡬνν¨μΌλ‘μ¨ λΉ λ₯΄κ² λ‘λλκ³ , μλ²½νκ² μλνλ©°, μ μΈκ³ μ¬μ©μμκ² μ°μν μ¬μ©μ κ²½νμ μ 곡νλ μΉμ¬μ΄νΈλ₯Ό λ§λ€ μ μμ΅λλ€. κ°μ ν μμμ μλ³νκ³ μλμ μμ λκ°κΈ° μν΄ μΉμ¬μ΄νΈμ μ±λ₯μ μ§μμ μΌλ‘ λͺ¨λν°λ§νκ³ λΆμνλ κ²μ μμ§ λ§μΈμ. μ±λ₯μ μ°μ μνλ©΄ μμΉ, κΈ°κΈ° λλ λ€νΈμν¬ μ‘°κ±΄μ κ΄κ³μμ΄ κΈμ μ μΈ κ²½νμ 보μ₯νμ¬ μ°Έμ¬λμ μ νμ¨μ λμΌ μ μμ΅λλ€.